package com.tea.zxql.controller;

import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.util.SaResult;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.tea.zxql.domain.Role;
import com.tea.zxql.service.RoleService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @ClassDescription: 角色管理控制器，提供角色相关的RESTful API接口
 * @ClassName: RoleController
 * @JdkVersion: 17
 * @Author: HYC
 * @Created: 2025/7/23 17:10
 * @Version 1.0
 */
@Tag(name = "角色管理")
@RestController
@RequestMapping("/role")
public class RoleController {


    @Autowired
    private RoleService roleService;


    /**
     * 获取角色列表
     * 该方法用于查询系统中的所有角色信息，但会排除SuperAdmin角色
     * 需要具有"system.role.query"权限才能访问此接口
     *
     * @return SaResult 包含角色列表的统一响应结果
     */
    @Operation(summary = "获取角色列表")
    @GetMapping("")
    @SaCheckPermission("system.role.query")
    public SaResult getList() {

        // 构造查询条件，排除SuperAdmin角色
        LambdaQueryWrapper<Role> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.ne(Role::getRole, "SuperAdmin");

        List<Role> list = roleService.list(queryWrapper);

        return SaResult.data(list);
    }

}

